﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "GcmpRenderingInterface.h"
#include "IEventArgs.h"

namespace gcmp
{
    /// \brief CanvasEventType 定义画布事件类型
    enum class CanvasEventType
    {
        Refreshed = 0,///< 增量刷新（Element增删改）后触发此事件。  这个枚举平台后面可能会废弃， 建议用RefreshBegin  RefreshEnd代替。
        FrameBeginRender = 1,///< 当前帧即将开始绘制
        FrameEndRender = 2,///< 当前帧绘制完成
        RefreshBegin = 3, ///< 刷新开始， （Element增删改）后触发此事件
        RefreshEnd = 4,///< 刷新结束
        RefreshOfBatchRenderGrepBegin = 5///<分批渲染开始
    };

    /// \brief 场景事件参数接口
    class GCMP_RENDERING_INTERFACE_EXPORT ICanvasEventArgs : public IEventArgs
    {
    public:
        /// \brief 获取画布事件类型。
        /// 
        /// \return 返回画布事件类型。
        virtual CanvasEventType GetType() const = 0;

        /// \brief 获取是全量刷新还是增量刷新， CanvasEventType  为Refreshed  RefreshBegin   RefreshEnd时， 才有意义
        /// 
        /// \return 全量刷新还是增量刷新
        virtual bool IsSceneRebuilt() const = 0;
    };
}

